home *** CD-ROM | disk | FTP | other *** search
- {
- Here is my percentage bar unit, that (??Steve Rogers?? I can't quite remember
- now--sorry ) suggested I try a whiles back (I just got around to it). It has
- been debugged for all of a hour.
- {**
-
- PBar Percentage Bar Unit copr.1995 Brad Zavitsky
-
- All Rights Reserved
- Commercial use not allowed
- Use at your own risk
-
- Formulae-
- Percentage => Round(cur/max);
- PBar progress => Round((cur/max) * #spaces);
-
- ReDraw-
- If set to true, the whole percentage bar is redrawn each time.
- If false, it will continue were last left off
-
- **}
-
- unit PBar;
-
- interface
-
- type
- BarObj = object
- ReDraw : Boolean;
- Spaces : Integer;
- Old,
- Max : Longint;
- Ch : Char;
- X,
- Y,
- Color : Byte;
- procedure UpDate(Cur: Longint);
- procedure Init(_Spaces: Integer; _Max: Longint; _Ch: Char; _X, _Y,
- _Color: Byte; _ReDraw: Boolean);
- end;
-
- implementation
-
- var
- VS: word;
-
- function VidSeg: Word;
- var
- VidM: ^Byte;
- begin
- {$iFDEF VER70}
- VidM := Ptr(Seg0040,$0049);
- if VidM^ = 7 then VidSeg := SegB000 else VidSeg := SegB800;
- {$ELSE}
- VidM := Ptr($0040,$0049);
- if VidM^ = 7 then VidSeg := $B000 else VidSeg := $B800;
- {$ENDiF}
- end;
-
- procedure WriteChar(Ch: char; x, y, attr: byte);
- var
- where: Word;
- [Abegin
- Where := 160*(Y-1)+2*(X-1);
- Mem[VS:Where] := Ord(Ch);
- Mem[VS:Where+1] := Attr;
- end;
-
- procedure BarObj.Init(_Spaces: Integer; _Max: Longint; _Ch: Char; _X, _Y,
- _Color: Byte; _ReDraw: Boolean);
- begin
- Old := 0;
- Spaces := _Spaces;
- X := _X;
- Y := _Y;
- Color := _Color;
- Ch := _Ch;
- Max := _Max;
- ReDraw := _ReDraw;
- end;
-
- procedure BarObj.UpDate(Cur: Longint);
- var
- Temp,
- OldPos,
- SpacePos: Integer;
- begin
- SpacePos := Round((Cur/Max) * Spaces);
- if ReDraw then
- begin
- for Temp := 0 to SpacePos-1 do WriteChar(Ch, X+Temp, Y, Color);
- end else
- begin
- Dec(SpacePos, Old);
- for Temp := 0 to SpacePos-1 do WriteChar(Ch, X+Temp+Old, Y, Color);
- Inc(Old, SpacePos);
- end;
- end;
-
- begin
- VS := VidSeg;
- end.